﻿using PersistenceLayer.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PersistenceLayer.DAL
{
	public class Produto_CategoriaDAL
	{
		private Entities Entity;

		public Produto_CategoriaDAL()
		{
			Entity = new Entities();
		}

		public int Adicionar(Produto_Categoria c)
		{
			try
			{
				Entity.Produto_Categoria.Add(c);
				Entity.SaveChanges();

				return c.ID;
			}
			catch (Exception)
			{
				throw;
			}
		}
		public Produto_Categoria Obter(int catID)
		{
			return Entity.Produto_Categoria.Where(a => a.ID == catID).SingleOrDefault();
		}
		public List<Produto_Categoria> Listar()
		{
			return Entity.Produto_Categoria.ToList();
		}
		public void Atualizar(Produto_Categoria novo)
		{
			var old = Entity.Produto_Categoria.Where(a => a.ID == novo.ID).Single();
			old.Descricao = novo.Descricao;

			Entity.SaveChanges();
		}
		public void Deletar(Produto_Categoria pc)
		{
			try
			{
				if (Entity.Produto.Count(a => a.Categoria_ID == pc.ID || a.CategoriaSecundaria_ID == pc.ID) > 0)
					throw new ApplicationException("Ainda há produtos utilizando-se desta categoria!");

				Entity.Produto_Categoria.Remove(pc);
			}
			catch (Exception)
			{
				throw;
			}
		}
	}
}
